/**
 * --- 题目描述 ---
 * 
 * 实现一个函数，可以对 url 中的 query 部分做拆解，返回一个 key: value 形式的 object  
 * 
 * --- 实例 ---
 * 
 * 输入：'http://sample.com/?a=1&e&b=2&c=xx&d#hash' 
 * 输出：{a: 1, b: 2, c: 'xx', d: ''}  
 */

// interface State {
// 	[propName: string]: any
// }

// const getParams = (url: string): State => {
// 	// 拆分字符串
// 	const s = url.split('?')
// 	const s1 = s[1].split('#')
// 	const str = s1[0]
// 	const o: State = {}
// 	str.split('&').forEach(v => {
// 		// 获取键名和键值
// 		const [key, value = ''] = v.split('=')
// 		// 添加键值对
// 		o[key] = value
// 	})
// 	return o
// }


// const s = getParams('http://sample.com/?a=1&e&b=2&c=xx&d#hash')
// console.log(s);

/*************************  ajax ******************************/
// interface DataState {
// 	[propName: string]: any
// }

// const ajax = {
// 	post(url: string, data: DataState): Promise<any> {
// 		return new Promise((resolve, reject) => {
// 			// 1. 新建xhr
// 			const xhr = new XMLHttpRequest()
// 			// 2. 打开链接
// 			xhr.open('post', url)
// 			const p = ajax.paramsToUrl(data)
// 			// 设置请求报文
// 			xhr.setRequestHeader('Content-type', 'xxxx-form-unicodeUrl 忘记了！')
// 			// 3. 发送数据
// 			xhr.send(p)
// 			// 4. 监听
// 			xhr.addEventListener('readystatechange', () => {
// 				if(xhr.status === 200 && xhr.readyState === 4) {
// 					// 5. 返回数据
// 					resolve(xhr.responseText)
// 				}
// 			})
// 		})
// 	},
// 	paramsToUrl(data: DataState): string {
// 		return Object.entries(o).map(v => {
// 			return v.join('=')
// 		}).join('&')
// 	}
// }

// // 无法运行  需要服务器环境
// ajax.post('/api/list', { username: '123', password: 222 }).then(resp => {
// 	console.log(resp.data)
// })



// 1.时间是我们项目中最常用的一类工具，现要求大家开发一个函数计算一个给定时间戳距离当前的时间距离，复数加s
// 一天以上则显示多少天，如三天显示3days
// 一天以内，一小时以上则显示多少小时，如五小时则显示5hours
// 一小时以内，则显示多少分钟，如一分钟则显示1minute


const computeDate = (count: number) => {
	// 获取时分秒
	const result = +new Date(count) - +new Date();

	const day = parseInt((result / 1000 / 60 / 60 / 24).toString())
	const hour = parseInt((result / 1000 / 60 / 60 % 24).toString())
	const minute = parseInt((result / 1000 / 60 % 60).toString())

	if (day > 0) {
		return `${day}day`
	} else if (hour > 0) {
		return `${hour}hour`
	} else {
		return `${minute}minute`
	}


}

const s = computeDate(+new Date() + 1000 * 60 * 60 * 24 * 5)
console.log(s);



